
var express = require('express');
//创建路由对象
var router = express.Router();
//引入模型通过模型类操作数据库
var User = require('../models/User.js');
var Content = require('../models/Content.js');
/*
* 用户注册
*   注册逻辑：
*   1：用户名不能为空
*   2：密码不能为空
*   3两次输入密码必须以致
*
*   4：用户是否已经被注册了（数据库查询）
* */

//统一返回格式
var responseData;
router.use(function (req,res,next) {
    responseData = {
        code:0,
        messge:''
    }
    next();
});
router.post('/user/register',function (req,res,next) {
    //用户提交的数据
    //console.log(req.body);
    var username = req.body.username;
    var password = req.body.password;
    var repassword = req.body.repassword;

    //用户名是否为空
    if (username ==''){
       responseData.code = 1;
       responseData.messge = '用户民不能为空';
       //返回给前端
       res.json(responseData);
       return;
    }
    //密码不能为空
    if (password ==''){
        responseData.code = 2;
        responseData.messge = '密码不能为空';
        //返回给前端
        res.json(responseData);
        return;
    }
    //两次输入的密码不一致
    if (password!==repassword){
        responseData.code = 3;
        responseData.messge = '密码不一致';
        //返回给前端
        res.json(responseData);
        return;
    }
    //用户名是否已经被注册了，如果数据库中已经存在和我们要注册的用户名同名的数据，表示该用户已经被注册了
    //查找一条数据，返回promise对象
    User.findOne({
        username:username
    }).then(function (useInfo) {
            //数据库中查找返回的数据 为null则没有被注册
            //console.log(useInfo);
        if (useInfo){
            //存在表示数据库有该信息
            //返回前端
            responseData.code = 5;
            responseData.messge = '用户名已经被注册了';
            res.json(responseData);
            return;
        }
        //保存数据到数据库中
        //使用模型类创建一个对象
        var user = new User({
            username:username,
            password:password
        });
        //使用对象下的方法保存数据到数据表中
        return user.save();
    }).then(function (newUserInfo) {
        //注册成功的信息
            //console.log(newUserInfo);
        //返回前端
        responseData.messge = '已提交数据注册成功';
        res.json(responseData)
        
    });
});

/////////////////////////////////
//登录
router.use('/user/login',function (req,res,next) {

    var username = req.body.username;
    var password = req.body.password;

    if (username=='' || password==''){
        responseData.code = 1;
        responseData.messge='用户名和密码不能为空';
        res.json(responseData);
        return;
    }
    //查询数据库中相同用户名和密码的记录是否存在，如果存在则登录成功

    User.findOne({
        username:username,
        password:password
    }).then(function (useInfo) {
        console.log(useInfo)
        if (!useInfo){
            responseData.code = 2;
            responseData.messge = '用户名或密码错误';
            res.json(responseData);
            return;
        }
        //用户名和密码是正确的 ；
        responseData.userInfo={
            _id:useInfo.id,
            username:useInfo.username
        };
        //发送一个cookies信息给浏览器 再次访问时会以头信息返回给服务端
        req.cookies.set('userInfo',JSON.stringify({
            _id:useInfo.id,
            username:useInfo.username
        }))
        responseData.messge= '登录成功';
        //返回前端
        res.json(responseData);
        return;
    })
});
//////退出

router.get('/user/logout',function (req,res) {
    req.cookies.set('userInfo',null);
    responseData.messge= '退出成功';
    res.json(responseData);

});
//获取内容所有的评论；返回前端
router.get('/comment',function (req,res) {
    var contentId = req.query.contentid || '';
    Content.findOne({
        _id:contentId
    }).then(function (content){
        console.log(content);
        responseData.Database = content.comments;
        res.json(responseData)
    })
});

//评论提交
router.post('/comment/post',function (req,res) {
    //console.log(req.body)
    //接受内容的ID
    var contentId = req.body.contentid || '';

    var postData = {
        username:req.userInfo.username,
        postTime: new Date(),
        postcontent:req.body.content
    };
//查询这篇内容的数据 ,并将得到的数据postData添加到comments中，保存到数据库
    Content.findOne({
        _id:contentId
    }).then(function (content) {
        console.log(content);
        content.comments.push(postData);
       return content.save()
    }).then(function (newcontent) {
        //保存后的内容数据
        //返回前端
        //console.log(newcontent)
        responseData.messge = '评论成功';
        //评论的内容返回前端
        responseData.Database = newcontent;
        res.json(responseData)
    })

});

//返回
module.exports = router;